package cn.xgx.model;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.util.Date;

//账户信息
@ApiModel(value="账户")
@TableName("sys_user")
@Data
@EqualsAndHashCode(callSuper = false,of = {"id"})
@NoArgsConstructor
public class User implements java.io.Serializable {
    //标识主键策略
    @TableId(type = IdType.AUTO)
    private Long id;
//    @NotBlank(message = "账户名不能为空")
//    @Length(min = 4, max = 20, message = "账户名的长度必须在 {min} - {max} 之间")
    private String username;//账户名
    private String password;//密码
//    @Length(min = 2, max = 20, message = "姓名的长度必须在 {min} - {max} 之间")
//    @NotBlank(message = "姓名不能为空")
    private String nickName;//昵称/网名
//    @NotNull(message = "性别不能为空")
//    @Range(min = 0,max = 2,message = "性别的数值必须在{min} - {max}之间")
    private Integer sex;//性别
    private String headImgUrl;//头像地址
//    @NotNull(message = "账户状态不能为空")
//    @Range(min = 0,max = 2,message = "账户状态的数值必须在{min} - {max}之间")
    private Integer status;//账户状态
    private Boolean deleteStatus;//删除状态
    private Date createTime;//创建时间
    private Date updateTime;//最后编辑时间
    private String description;//账户描述

    //非数据库字段
    @TableField(exist = false)
    private Integer roleNumber;//角色数
    @TableField(exist = false)
    private Integer permissionNumber;//权限数

    //用于接收前端的数据
    @TableField(exist = false)
    private Integer[] roleIds;//用于接收前端传递过来的角色集合id。


    public User(Long id) {
        this.id = id;
    }

    //密码的值不传递到前端
    @JsonIgnore
    public String getPassword() {
        return password;
    }

    //能接收到前端传递过来的值
    @JsonProperty
    public void setPassword(String password) {
        this.password = password;
    }
}
